import { ApiProperty } from '@nestjs/swagger'
import { IsEnum, IsNumber, IsOptional, IsString } from 'class-validator'
import { Column, CreateDateColumn, Entity, PrimaryGeneratedColumn, UpdateDateColumn } from 'typeorm'

export enum ChannelEnum {
  /** 360 */
  QIHOO = 'QIHOO',
  /** 百度 */
  BAIDU = 'BAIDU',
}

@Entity('monitor')
export class MonitorEntity {
  @PrimaryGeneratedColumn()
  @IsNumber()
  monitorId: number

  /**
   * 第三方数据（转字符串）
   */
  @Column()
  @IsString()
  onlyId: string

  /**
   * 手机号
   */
  @Column()
  @IsString()
  phone: string

  /**
   * 渠道
   * QIHOO：360 ｜ BAIDU：百度
   */
  @ApiProperty({ enum: ChannelEnum })
  @Column({ type: 'enum', enum: ChannelEnum })
  @IsEnum(ChannelEnum)
  channel: ChannelEnum

  /**
   * 转化类型
   * 具体类型查看文档
   */
  @Column({ nullable: true })
  @IsString()
  @IsOptional()
  eventType?: string

  /**
   * 用户 uid
   */
  @Column({ nullable: true })
  @IsString()
  @IsOptional()
  userUid?: string

  @CreateDateColumn()
  createdAt?: Date

  @UpdateDateColumn()
  updatedAt?: Date
}
